package com.sudworth.repository

import android.content.Context
import android.content.SharedPreferences
import com.google.gson.Gson

/**
 * 仓库 配置
 */
object RepositorySDK {

    /**
     * sharedPreferences name
     */
    const val sp_name = "moving_bricks_repository"

    /**
     * 缓存本地一些数据，无关安全的。
     * 隐私性的数据应该加油加密数据库保存
     */
    lateinit var mSharedPreferences: SharedPreferences

    /**
     * 存放http请求头
     */
    private val mHttpHeaderMap = hashMapOf<String, String>()

    /**
     * 请使用全局性的 context
     */
    fun init(context: Context) {
        mSharedPreferences = context.getSharedPreferences(sp_name, Context.MODE_PRIVATE)
    }

    /**
     * 添加token,最新的会替换老的
     * @param token
     */
    fun addToken(token: String) {
        addHttpHeader("blade-auth", token)
    }

    fun clearToken() {
        removeHttpHeader("blade-auth")
    }

    /**
     * 移除 http请求的 请求头
     * @param name 被移除的 请求头的name
     */
    fun removeHttpHeader(name: String) {
        if (mHttpHeaderMap.containsKey(name)) {
            mHttpHeaderMap.remove(name)
        }
        val headers = Gson().toJson(mHttpHeaderMap)
        mSharedPreferences.edit().putString("headers", headers).apply()
    }

    /**
     * http请求，添加请求头，重复的key，最后一个生效
     * @param name 请求头的名字
     * @param value 请求头的值
     */
    fun addHttpHeader(name: String, value: String) {
        if (mHttpHeaderMap.containsKey(name)) {
            mHttpHeaderMap.remove(name)
        }
        mHttpHeaderMap[name] = value
        val headers = Gson().toJson(mHttpHeaderMap)
        mSharedPreferences.edit().putString("headers", headers).apply()
    }
}